home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-08-03 | 3.8 KB | 127 lines | [TEXT/ROSA] |
- ;
- ; Test program fragments from Guy L. Steele Jr.'s
- ; "Common Lisp, the Language", second edition,
- ; and from Franz Inc.'s "Common Lisp, the Reference".
- ;
-
- (defun _assert (x val)
- (let ((ret (eval x)))
- (if (not (equal ret val))
- (progn
- (print "assertion failed: ")
- (write "expression = ")
- (print x)
- (write "expected value = ")
- (print val)
- (write "evaluation returned: ")
- (print ret)
- nil)
- t)))
-
- (defmacro assert (expr expected-value)
- `(_assert (quote ,expr) ,expected-value))
-
- ; from Steele, p. 116
- (progn
- (defun adder (x) (function (lambda (y) (+ x y))))
- (setq add3 (adder 3))
- (assert
- (funcall add3 5) 8)
- )
-
- (progn
- (defun two-funs (x)
- (list (function (lambda () x))
- (function (lambda (y) (setq x y)))))
- (setq funs (two-funs 6))
- (assert (funcall (car funs)) 6)
- (assert (funcall (cadr funs) 43) 43)
- (assert (funcall (car funs)) 43)
- )
-
- ; from Steele, p. 104
-
- ; test eq function
- (progn
- (assert (eq 'a 'b) nil)
- (assert (eq 'a 'a) t)
- (eq 3 3) ; implementation dependent
- (assert (eq 3 3.0) nil)
- ; not implemented ; (assert (eq #c(3 -4) #c(3 -4)) nil)
- ; not implemented ; (assert (eq #c(3 -4.0) #c(3 -4)) nil)
- (assert (eq (cons 'a 'b) (cons 'a 'c)) nil)
- (assert (eq (cons 'a 'b) (cons 'a 'b)) nil)
- (eq '(a . b) '(a . b)) ; implementation dependent
- (assert (progn (setq x (cons 'a 'b)) (eq x x)) t)
- (assert (progn (setq x '(a . b)) (eq x x)) t)
- (eq #\A #\A) ; implementation dependent
- (eq "Foo" "Foo") ; implementation dependent
- (assert (eq "Foo" (copy-seq "Foo")) nil)
- (assert (eq "FOO" "foo") nil))
-
- ; test eql function
- (progn
- (assert (eql 'a 'b) nil)
- (assert (eql 'a 'a) t)
- (assert (eql 3 3) t)
- (assert (eql 3 3.0) nil)
- (assert (eql 3.0 3.0) t)
- ; not implemented ; (assert (eql #c(3 -4) #c(3 -4)) t)
- ; not implemented ; (assert (eql #c(3 -4.0) #c(3 -4)) nil)
- (assert (eql (cons 'a 'b) (cons 'a 'c)) nil)
- (assert (eql (cons 'a 'b) (cons 'a 'b)) nil)
- (eql '(a . b) '(a . b)) ; implementation dependent
- (assert (progn (setq x (cons 'a 'b)) (eql x x)) t)
- (assert (progn (setq x '(a . b)) (eql x x)) t)
- (assert (eql #\A #\A) t)
- (eql "Foo" "Foo") ; implementation dependent
- (assert (eql "Foo" (copy-seq "Foo")) nil)
- (assert (eql "FOO" "foo") nil))
-
- ; test equal function
- (progn
- (assert (equal 'a 'b) nil)
- (assert (equal 'a 'a) t)
- (assert (equal 3 3) t)
- (assert (equal 3 3.0) nil)
- (assert (equal 3.0 3.0) t)
- ; not implemented ; (assert (equal #c(3 -4) #c(3 -4)) t)
- ; not implemented ; (assert (equal #c(3 -4.0) #c(3 -4)) nil)
- (assert (equal (cons 'a 'b) (cons 'a 'c)) nil)
- (assert (equal (cons 'a 'b) (cons 'a 'b)) t)
- (assert (equal '(a . b) '(a . b)) t)
- (assert (progn (setq x (cons 'a 'b)) (equal x x)) t)
- (assert (progn (setq x '(a . b)) (equal x x)) t)
- (assert (equal #\A #\A) t)
- (assert (equal "Foo" "Foo") t)
- (assert (equal "Foo" (copy-seq "Foo")) t)
- (assert (equal "FOO" "foo") nil))
-
- ; test equalp function
- (progn
- (assert (equalp 'a 'b) nil)
- (assert (equalp 'a 'a) t)
- (assert (equalp 3 3) t)
- (assert (equalp 3 3.0) t)
- (assert (equalp 3.0 3.0) t)
- ; not implemented ; (assert (equalp #c(3 -4) #c(3 -4)) t)
- ; not implemented ; (assert (equalp #c(3 -4.0) #c(3 -4)) t)
- (assert (equalp (cons 'a 'b) (cons 'a 'c)) nil)
- (assert (equalp (cons 'a 'b) (cons 'a 'b)) t)
- (assert (equalp '(a . b) '(a . b)) t)
- (assert (progn (setq x (cons 'a 'b)) (equalp x x)) t)
- (assert (progn (setq x '(a . b)) (equalp x x)) t)
- (assert (equalp #\A #\A) t)
- (assert (equalp "Foo" "Foo") t)
- (assert (equalp "Foo" (copy-seq "Foo")) t)
- (assert (equalp "FOO" "foo") t))
-
- ; From Steele p.216
- (setq _x_ '(2.6 2.5 2.4 0.7 0.3 -0.3 -0.7 -2.4 -2.5 -2.6))
- (assert (equal (mapcar #'floor _x_) '(2 2 2 0 0 -1 -1 -3 -3 -3)) t)
- (assert (equal (mapcar #'ceiling _x_) '(3 3 3 1 1 0 0 -2 -2 -2)) t)
- (assert (equal (mapcar #'truncate _x_) '(2 2 2 0 0 0 0 -2 -2 -2)) t)
- (assert (equal (mapcar #'round _x_) '(3 2 2 1 0 0 -1 -2 -2 -3)) t)
-
-
-